package com.ruoyi.module.service;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.module.domain.FtpFile;
import com.ruoyi.module.domain.FtpFileExample;
import com.ruoyi.module.mapper.FtpFileMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

/**
 * ftp文件列Service业务层处理
 *
 * @author ruoyi
 * @date 2022-04-13
 */
@DS("bookmgr")
@Service
@RequiredArgsConstructor
public class CmFtpFileService {
    private final FtpFileMapper ftpFileMapper;

    /**
     * 查询ftp文件列
     *
     * @param id ftp文件列主键
     * @return ftp文件列
     */
    public FtpFile selectCmFtpFileById(Long id) {
        return ftpFileMapper.selectByPrimaryKey(id);
    }

    /**
     * 查询ftp文件列列表
     *
     * @param timestamp 同步时间
     * @return ftp文件列
     */
    public List<FtpFile> selectCmFtpFileList(LocalDate timestamp) {
        FtpFileExample example = new FtpFileExample();
        if (null != timestamp) {
            LocalDateTime startTime = LocalDateTime.of(timestamp, LocalTime.MIN);
            LocalDateTime endTime = LocalDateTime.of(timestamp, LocalTime.MAX);
            example.or().andTimestampBetween(startTime, endTime);
        }

        return ftpFileMapper.selectByExample(example);
    }

    /**
     * 新增ftp文件列
     *
     * @param cmFtpFile ftp文件列
     * @return 结果
     */
    public int insertCmFtpFile(FtpFile cmFtpFile) {
        return ftpFileMapper.insertSelective(cmFtpFile);
    }

    /**
     * 修改ftp文件列
     *
     * @param cmFtpFile ftp文件列
     * @return 结果
     */
    public int updateCmFtpFile(FtpFile cmFtpFile) {
        return ftpFileMapper.updateByPrimaryKeySelective(cmFtpFile);
    }

    /**
     * 批量删除ftp文件列
     *
     * @param ids 需要删除的ftp文件列主键
     * @return 结果
     */
    public int deleteCmFtpFileByIds(List<Long> ids) {
        FtpFileExample example = new FtpFileExample();
        example.or().andIdIn(ids);

        return ftpFileMapper.deleteByExample(example);
    }

    /**
     * 删除ftp文件列信息
     *
     * @param id ftp文件列主键
     * @return 结果
     */
    public int deleteCmFtpFileById(Long id) {
        return ftpFileMapper.deleteByPrimaryKey(id);
    }

    public int batchInsert(List<FtpFile> files) {
        return ftpFileMapper.batchInsert(files);
    }

    public List<FtpFile> querySelective(List<String> fileNames) {
        FtpFileExample example = new FtpFileExample();
        example.or().andNameIn(fileNames);

        return ftpFileMapper.selectByExample(example);
    }

    /**
     * 查询所有未处理的文件
     *
     * @return
     */
    public List<FtpFile> queryNewFiles() {
        FtpFileExample example = new FtpFileExample();
        example.or().andStatusEqualTo((byte) 1);

        example.orderBy("timestamp");
        return ftpFileMapper.selectByExample(example);
    }
}
